home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Workbench Add-On
/
Workbench Add-On - Volume 1.iso
/
Dev
/
Oberon
/
source
/
EAGUI
/
EAGUI.mod
< prev
next >
Wrap
Text File
|
1995-06-29
|
9KB
|
299 lines
(*************************************************************************
$RCSfile: EAGUI.mod $
Description: Interface to EAGUI.library
Created by: fjc (Frank Copeland)
$Revision: 1.3 $
$Author: fjc $
$Date: 1995/06/04 23:19:35 $
Oberon-A Interface Copyright © 1995, Frank Copeland.
This file is part of the Oberon-A Library.
See Oberon-A.doc for conditions of use and distribution.
*************************************************************************)
<* STANDARD- *>
MODULE [2] EAGUI;
IMPORT
SYS := SYSTEM, Kernel, e := Exec, u := Utility, gfx := Graphics,
i := Intuition, gt := GadTools;
CONST
(* library name and version *)
LIBRARYNAME * = "EAGUI.library";
LIBRARYVERSION * = 3;
(* Object.type definitions *)
TYPE_HGROUP * = 1;
TYPE_VGROUP * = 2;
TYPE_GTGADGET * = 3;
TYPE_BOOPSIGADGET * = 4;
TYPE_CUSTOMIMAGE * = 5;
TYPE_BOOPSIIMAGE * = 6;
(* various LONG attributes can have an unknown value at some point *)
UNKNOWN * = -1;
(* error return codes *)
ERROR_OK * = 0;
ERROR_OUT_OF_MEMORY * = 100;
ERROR_BAD_OBJECT * = 101;
(* flags for standard methods *)
SM_NONE * = 000000000H;
SM_MINSIZE * = 000000001H;
SM_BORDER * = 000000002H;
(* tags *)
TAGBASE * = u.user;
(* These tags can be used under different circumstances. The characters in
* the comments behind the tags indicate the allowed use:
*
* I = Initialize: NewObjectA()
* S = Set: SetAttrsA()
* G = Get: GetAttrsA()
*
* Most functions ignore tags they don't recognize, but don't count on
* that, or side effects may occur in future versions.
*)
Parent * = TAGBASE + 1; (* I.G *)
Type * = TAGBASE + 2; (* ..G *)
Disabled * = TAGBASE + 3; (* ISG *)
ID * = TAGBASE + 4; (* ISG *)
MinWidth * = TAGBASE + 5; (* ISG *)
MinHeight * = TAGBASE + 6; (* ISG *)
BorderLeft * = TAGBASE + 7; (* ISG *)
BorderRight * = TAGBASE + 8; (* ISG *)
BorderTop * = TAGBASE + 9; (* ISG *)
BorderBottom * = TAGBASE + 10; (* ISG *)
Left * = TAGBASE + 11; (* .SG *)
Top * = TAGBASE + 12; (* .SG *)
Width * = TAGBASE + 13; (* ISG *)
Height * = TAGBASE + 14; (* ISG *)
Weight * = TAGBASE + 15; (* ISG *)
Instance * = TAGBASE + 17; (* ..G *)
InstanceAddress * = TAGBASE + 18; (* ISG *)
MinSizeMethod * = TAGBASE + 19; (* ISG *)
BorderMethod * = TAGBASE + 20; (* ISG *)
RenderMethod * = TAGBASE + 21; (* ISG *)
GetStateMethod * = TAGBASE + 22; (* ISG *)
SetStateMethod * = TAGBASE + 23; (* ISG *)
Object * = TAGBASE + 24; (* I.. *)
GTType * = TAGBASE + 25; (* ISG *)
GTTagList * = TAGBASE + 26; (* ISG *)
GTText * = TAGBASE + 27; (* ISG *)
GTTextAttr * = TAGBASE + 28; (* ISG *)
GTFlags * = TAGBASE + 29; (* ISG *)
BOOPSIPrivClass * = TAGBASE + 30; (* ISG *)
BOOPSIPubClass * = TAGBASE + 31; (* ISG *)
BOOPSITagList * = TAGBASE + 32; (* ISG *)
Child * = TAGBASE + 33; (* I.. *)
FirstChild * = TAGBASE + 34; (* ..G *)
NextObject * = TAGBASE + 35; (* ..G *)
StandardMethod * = TAGBASE + 36; (* IS. *)
UserData * = TAGBASE + 37; (* ISG *)
DefDisabled * = TAGBASE + 38; (* .SG *)
DefWeight * = TAGBASE + 39; (* .SG *)
DefMinSizeMethod * = TAGBASE + 40; (* .SG *)
DefBorderMethod * = TAGBASE + 41; (* .SG *)
DefRenderMethod * = TAGBASE + 42; (* .SG *)
DefGetStateMethod * = TAGBASE + 43; (* .SG *)
DefSetStateMethod * = TAGBASE + 44; (* .SG *)
DefGTType * = TAGBASE + 45; (* .SG *)
DefGTTagList * = TAGBASE + 46; (* .SG *)
DefGTText * = TAGBASE + 47; (* .SG *)
DefGTTextAttr * = TAGBASE + 48; (* .SG *)
DefGTFlags * = TAGBASE + 49; (* .SG *)
DefBOOPSIPrivClass * = TAGBASE + 50; (* .SG *)
DefBOOPSIPubClass * = TAGBASE + 51; (* .SG *)
DefBOOPSITagList * = TAGBASE + 52; (* .SG *)
DefStandardMethod * = TAGBASE + 53; (* .SG *)
DefBorderLeft * = TAGBASE + 54; (* .SG *)
DefBorderRight * = TAGBASE + 55; (* .SG *)
DefBorderTop * = TAGBASE + 56; (* .SG *)
DefBorderBottom * = TAGBASE + 57; (* .SG *)
TYPE
(* Pointer to an object, which is used as a `handle' by a lot of functions.
* The actual data structure of the object is hidden from the application
* programmer.
*)
OPTR * = POINTER TO RECORD END;
(* This structure is READ-ONLY! *)
RelationObjectPtr * = POINTER TO RelationObject;
RelationObject * = RECORD (e.NodeBase)
(* private *)
node - : e.Node; (* node *)
(* attributes *)
object_ptr - : OPTR; (* pointer to the object *)
END;
(* Message structure as used by the Render hook. A pointer to this
* structure is passed in the message parameter of the callback hook. For
* more information on hooks, take a look at amiga.lib/CallHook() or
* utility.library/CallHookPkt().
*)
RenderMessagePtr * = POINTER TO RenderMessage;
RenderMessage * = RECORD
root_ptr * : OPTR;
rastport_ptr * : gfx.RastPortPtr;
END;
(*-- Library Base variable --------------------------------------------*)
VAR
base* : e.LibraryPtr;
(*-- Library Functions ------------------------------------------------*)
PROCEDURE GetMinSizes * [base, -30]
( obj_ptr [8] : OPTR );
PROCEDURE LayoutObjects * [base, -36]
( obj_ptr [8] : OPTR );
PROCEDURE GetObjectLeft * [base, -42]
( root_ptr [8] : OPTR;
obj_ptr [9] : OPTR )
: LONGINT;
PROCEDURE GetObjectTop * [base, -48]
( root_ptr [8] : OPTR;
obj_ptr [9] : OPTR )
: LONGINT;
PROCEDURE CreateGadgetList * [base, -54]
( obj_ptr [8] : OPTR;
VAR glist_ptr [9] : i.GadgetPtr;
vi_ptr [10] : gt.VisualInfo;
draw_ptr [11] : i.DrawInfoPtr )
: LONGINT;
PROCEDURE FreeGadgetList * [base, -60]
( obj_ptr [8] : OPTR;
glist_ptr [9] : i.GadgetPtr );
PROCEDURE NewObjectA * [base, -96]
( type [0] : e.ULONG;
taglist_ptr [8] : u.TagListPtr )
: OPTR;
PROCEDURE NewObject * [base, -96]
( type [0] : e.ULONG;
taglist_ptr [8].. : u.Tag )
: OPTR;
PROCEDURE TextLength * [base, -108]
( VAR textattr [8] : gfx.TextAttr;
string_ptr [9] : ARRAY OF CHAR;
underscore [0] : CHAR )
: LONGINT;
PROCEDURE TextLengthPtr * [base, -108]
( textattr_ptr [8] : gfx.TextAttrPtr;
string_ptr [9] : e.LSTRPTR;
underscore [0] : CHAR )
: LONGINT;
PROCEDURE TextHeight * [base, -114]
( VAR textattr [8] : gfx.TextAttr )
: LONGINT;
PROCEDURE TextHeightPtr * [base, -114]
( textattr_ptr [8] : gfx.TextAttrPtr )
: LONGINT;
PROCEDURE PrintObjects * [base, -126]
( obj_ptr [8] : OPTR );
PROCEDURE DisposeObject * [base, -102]
( obj_ptr [8] : OPTR );
PROCEDURE RenderObjects * [base, -120]
( obj_ptr [8] : OPTR;
rastport_ptr [9] : gfx.RastPortPtr );
PROCEDURE NewRelationA * [base, -66]
( obj_ptr [8] : OPTR;
hook_ptr [9] : u.HookPtr;
taglist_ptr [10] : u.TagListPtr )
: LONGINT;
PROCEDURE NewRelation * [base, -66]
( obj_ptr [8] : OPTR;
hook_ptr [9] : u.HookPtr;
taglist_ptr [10].. : u.Tag )
: LONGINT;
PROCEDURE GetAttrsA * [base, -78]
( obj_ptr [8] : OPTR;
taglist_ptr [9] : u.TagListPtr )
: e.ULONG;
PROCEDURE GetAttrs * [base, -78]
( obj_ptr [8] : OPTR;
taglist_ptr [9].. : u.Tag )
: e.ULONG;
PROCEDURE SetAttrsA * [base, -90]
( obj_ptr [8] : OPTR;
taglist_ptr [9] : u.TagListPtr )
: e.ULONG;
PROCEDURE SetAttrs * [base, -90]
( obj_ptr [8] : OPTR;
taglist_ptr [9].. : u.Tag )
: e.ULONG;
PROCEDURE GetAttr * [base, -72]
( obj_ptr [8] : OPTR;
attribute [0] : e.ULONG )
: e.ULONG;
PROCEDURE SetAttr * [base, -84]
( obj_ptr [8] : OPTR;
attribute [0] : e.ULONG;
value [1] : SYS.LONGWORD )
: e.ULONG;
(*-- Library Base variable --------------------------------------------*)
<*$LongVars-*>
(**-----------------------------------*)
PROCEDURE* [0] CloseLib (VAR rc : LONGINT);
BEGIN (* CloseLib *)
IF base # NIL THEN e.CloseLibrary (base) END
END CloseLib;
BEGIN
base := e.OpenLibrary (LIBRARYNAME, LIBRARYVERSION);
IF base # NIL THEN Kernel.SetCleanup (CloseLib) END
END EAGUI.